Trait (programmation)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
Un trait est une sous-classe abstraite, un modèle conceptuel pour structurer des programmes orientés objets.
C'est un ensemble de méthodes concrètes ou fonctions, pouvant être ajouté à une classe pour étendre ses fonctionnalités.
Quand un langage de programmation supporte les traits, il permet la résolution explicite des conflits qui apparaissent quand une classe utilise deux traits qui ont des méthodes qui portent le même nom (contrairement aux mixinscite-ref-1[1]).
Les traits ne sont pas des types abstraits car ils ne capturent pas l'essence de l'objet mais celle de ses propriétés et méthodescite-ref-2[2]cite-ref-3[3].
Contents
• Exemple
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Implémentations
• Java inclut cette fonctionnalité depuis sa version 8 sortie en mars 2014 introduisant la fonctionnalité des méthodes par défaut.
• Les traits sont proposés pour inclusion dans Smalltalk.
Exemple
L'exemple d'utilisation suivant en PHP montre une meilleure granularité des traits en comparaison d'un héritage multiple :
trait Hello {
public function sayHello() {
echo 'Hello ';
}
}
trait World {
public function sayWorld() {
echo ' World';
}
}
class MyHelloWorld {
use Hello, World;
public function sayExclamationMark() {
echo '!';
}
}
$o = new MyHelloWorld();
$o->sayHello();
$o->sayWorld();
$o->sayExclamationMark();
Notes et références
cite-note-11. ↑ guerraoui2003rachid-guerraoui2003(en) Rachid Guerraoui, ECOOP '99 : Object-Oriented Programming : 13th European Conference Lisbon, Portugal, June 14-18, 1999 Proceedings, Springer, 31 juillet 2003 (lire en ligne)
cite-note-22. ↑ s-stone1986harold-s-stone1986(en) Harold S. Stone, 1986 proceedings, IEEE Computer Society Press, coll. « Association for Computing Machinery, IEEE Computer Society », 1986 (lire en ligne)
cite-note-33. ↑ gutmann2007peter-gutmann2007(en) Peter Gutmann, Cryptographic Security Architecture : Design and Verification, Springer Science & Business Media, 8 mai 2007 (lire en ligne)
cite-note-55. ↑ (en) « Traits » : « traits are used to define object types by specifying the signature of the supported methods. »
cite-note-66. ↑ (en) « Traits » : « As of PHP 5.4.0, PHP implements a method of code reuse called Traits. »
cite-note-77. ↑ (en) « Traits » : « A trait is a language feature that tells the Rust compiler about functionality a type must provide. »
cite-note-88. ↑ (en) « fortran_proposals/20-109.txt at master · j3-fortran/fortran_proposals », sur GitHub (consulté le 18 septembre 2021)
Voir aussi
Articles connexes
Liens externes
• (en) Traits - Composable Units of Behavior sur Software Composition Group (université de Berne)
• (en) Proposition d'implémentation en PHP
• Portail de la programmation informatique